// 比对T 和 U 完全相同，才返回真
type Equal<T, U> = (<X>() => X extends T ? true : false) extends 
  (<X>() => X extends U ? true : false)
  ? true
  : false;

type e0 = Equal<'Santana', 'Santana'> // true
type e1 = Equal<1, 0> //false
type e2 = Equal<{}, { a: 'A' }> //false
type e3 = Equal<boolean, true> //false
type e4 = Equal<{ a: 'A' }, { readonly a: 'A' }> //false